我正在使用jQuery在Ajax上进行首次尝试。我正在将数据获取到页面上,但是为Date数据类型返回的JSON数据遇到了一些麻烦。基本上,我得到的字符串看起来像这样:
/Date(1224043200000)/
从完全不熟悉JSON的人- 如何将其格式化为短日期格式?是否应该在jQuery代码中的某个地方处理?我尝试jQuery.UI.datepicker使用该插件$.datepicker.formatDate()没有成功。
jQuery.UI.datepicker
$.datepicker.formatDate()
仅供参考:这是我结合以下答案使用的解决方案:
function getMismatch(id) { $.getJSON("Main.aspx?Callback=GetMismatch", { MismatchId: id }, function (result) { $("#AuthMerchId").text(result.AuthorizationMerchantId); $("#SttlMerchId").text(result.SettlementMerchantId); $("#CreateDate").text(formatJSONDate(Date(result.AppendDts))); $("#ExpireDate").text(formatJSONDate(Date(result.ExpiresDts))); $("#LastUpdate").text(formatJSONDate(Date(result.LastUpdateDts))); $("#LastUpdatedBy").text(result.LastUpdateNt); $("#ProcessIn").text(result.ProcessIn); } ); return false; } function formatJSONDate(jsonDate) { var newDate = dateFormat(jsonDate, "mm/dd/yyyy"); return newDate; }
该解决方案从回调方法中获取了我的对象,并使用日期格式库在页面上正确显示了日期。
eval()没有必要。这将正常工作:
eval()
var date = new Date(parseInt(jsonDate.substr(6)));
该substr()函数取出该/Date(部分,然后该parseInt()函数获取整数并)/在最后忽略。结果数将传递到Date构造函数中。
substr()
/Date(
parseInt()
)/
Date
我故意省略了基数(的第二个参数parseInt);
parseInt
另外,我完全同意Rory的评论:ISO-8601日期优于此旧格式- 因此,通常不应该将这种格式用于新开发。有关使用ISO-8601格式序列化日期的绝佳选择,请参见出色的Json.NET库。
对于ISO-8601格式的JSON日期,只需将字符串传递到Date构造函数中即可:
var date = new Date(jsonDate); //no ugly parsing needed; full timezone support